package com.king.netty.buf;

import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;

/**
 * Netty ByteBuf 简单使用案例
 *
 * @author unidentifiable
 * @date 2021-03-29
 */
public class NettyByteBufDemo01 {
    public static void main(String[] args) {

        // 创建一个ByteBuf
        // 1.创建对象，该对象包含一个数组arr，是一个byte[10]
        // 2.在【netty】的【buffer】中，不需要使用【flip】进行反转，底层维护了一个【readerIndex】和【wirteIndex】
        // 3.通过【readerIndex】,【wirteIndex】和【capacity】，将【buffer】分成三个区域
        /*
            0 -> readerIndex：已经读取的区域
            readerIndex ->  wirteIndex：可读的区域
            wirteIndex -> capacity：可写的区域
         */
        ByteBuf byteBuf = Unpooled.buffer(10);
        for (int i = 0; i < 10; i++) {
            byteBuf.writeByte(i);
        }

        System.out.println("capacity = " + byteBuf.capacity());
        // 输出
        for (int i = 0; i < 10; i++) {
            System.out.println(byteBuf.getByte(i));
        }
        for (int i = 0; i < 10; i++) {
            System.out.println(byteBuf.readByte());
        }
    }
}
